package br.siseventos.model;
// Generated 29/10/2012 23:23:36 by Hibernate Tools 3.2.1.GA

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 * TbUsuario generated by hbm2java
 */
@Entity
@Table(name = "tb_usuario", catalog = "SisEventosDB", uniqueConstraints =
@UniqueConstraint(columnNames = {"usr_usuario", "cod_rg_usuario"}))
public class TbUsuario extends BaseModel {

    private Integer idtUsuario;
    private TdPerfil tdPerfil;
    private String nmeUsuario;
    private String usrUsuario;
    private String pwdUsuario;
    private String emlUsuario;
    private String codRgUsuario;
    private String pwdUsuarioSalt;
    private char stsAcessoUsuario;
    private String telCelUsuario;
    private String telResUsuario;
    private String urlImagemUsuario;
    private String codCpfUsuario;
    private Set<TaAlocacaoServico> taAlocacaoServicos = new HashSet<TaAlocacaoServico>(0);
    private Set<TaAlocacaoLocal> taAlocacaoLocals = new HashSet<TaAlocacaoLocal>(0);
    private Set<TbInscricao> tbInscricaos = new HashSet<TbInscricao>(0);
    private Set<TaAlocacaoRecurso> taAlocacaoRecursos = new HashSet<TaAlocacaoRecurso>(0);

    public TbUsuario() {
    }

    public TbUsuario(TdPerfil tdPerfil, String nmeUsuario, String usrUsuario, String pwdUsuario, String emlUsuario, String codRgUsuario, String pwdUsuarioSalt, char stsAcessoUsuario) {
        this.tdPerfil = tdPerfil;
        this.nmeUsuario = nmeUsuario;
        this.usrUsuario = usrUsuario;
        this.pwdUsuario = pwdUsuario;
        this.emlUsuario = emlUsuario;
        this.codRgUsuario = codRgUsuario;
        this.pwdUsuarioSalt = pwdUsuarioSalt;
        this.stsAcessoUsuario = stsAcessoUsuario;
    }

    public TbUsuario(TdPerfil tdPerfil, String nmeUsuario, String usrUsuario, String pwdUsuario, String emlUsuario, String codRgUsuario, String pwdUsuarioSalt, char stsAcessoUsuario, String telCelUsuario, String telResUsuario, String urlImagemUsuario, String codCpfUsuario, Set<TaAlocacaoServico> taAlocacaoServicos, Set<TaAlocacaoLocal> taAlocacaoLocals, Set<TbInscricao> tbInscricaos, Set<TaAlocacaoRecurso> taAlocacaoRecursos) {
        this.tdPerfil = tdPerfil;
        this.nmeUsuario = nmeUsuario;
        this.usrUsuario = usrUsuario;
        this.pwdUsuario = pwdUsuario;
        this.emlUsuario = emlUsuario;
        this.codRgUsuario = codRgUsuario;
        this.pwdUsuarioSalt = pwdUsuarioSalt;
        this.stsAcessoUsuario = stsAcessoUsuario;
        this.telCelUsuario = telCelUsuario;
        this.telResUsuario = telResUsuario;
        this.urlImagemUsuario = urlImagemUsuario;
        this.codCpfUsuario = codCpfUsuario;
        this.taAlocacaoServicos = taAlocacaoServicos;
        this.taAlocacaoLocals = taAlocacaoLocals;
        this.tbInscricaos = tbInscricaos;
        this.taAlocacaoRecursos = taAlocacaoRecursos;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idt_usuario", unique = true, nullable = false)
    public Integer getIdtUsuario() {
        return this.idtUsuario;
    }

    public void setIdtUsuario(Integer idtUsuario) {
        this.idtUsuario = idtUsuario;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cod_perfil", nullable = false)
    public TdPerfil getTdPerfil() {
        return this.tdPerfil;
    }

    public void setTdPerfil(TdPerfil tdPerfil) {
        this.tdPerfil = tdPerfil;
    }

    @Column(name = "nme_usuario", nullable = false, length = 80)
    public String getNmeUsuario() {
        return this.nmeUsuario;
    }

    public void setNmeUsuario(String nmeUsuario) {
        this.nmeUsuario = nmeUsuario;
    }

    @Column(name = "usr_usuario", nullable = false, length = 20)
    public String getUsrUsuario() {
        return this.usrUsuario;
    }

    public void setUsrUsuario(String usrUsuario) {
        this.usrUsuario = usrUsuario;
    }

    @Column(name = "pwd_usuario", nullable = false, length = 64)
    public String getPwdUsuario() {
        return this.pwdUsuario;
    }

    public void setPwdUsuario(String pwdUsuario) {
        this.pwdUsuario = pwdUsuario;
    }

    @Column(name = "eml_usuario", nullable = false, length = 80)
    public String getEmlUsuario() {
        return this.emlUsuario;
    }

    public void setEmlUsuario(String emlUsuario) {
        this.emlUsuario = emlUsuario;
    }

    @Column(name = "cod_rg_usuario", nullable = false, length = 20)
    public String getCodRgUsuario() {
        return this.codRgUsuario;
    }

    public void setCodRgUsuario(String codRgUsuario) {
        this.codRgUsuario = codRgUsuario;
    }

    @Column(name = "pwd_usuario_salt", nullable = false, length = 64)
    public String getPwdUsuarioSalt() {
        return this.pwdUsuarioSalt;
    }

    public void setPwdUsuarioSalt(String pwdUsuarioSalt) {
        this.pwdUsuarioSalt = pwdUsuarioSalt;
    }

    @Column(name = "sts_acesso_usuario", nullable = false, length = 1)
    public char getStsAcessoUsuario() {
        return this.stsAcessoUsuario;
    }

    public void setStsAcessoUsuario(char stsAcessoUsuario) {
        this.stsAcessoUsuario = stsAcessoUsuario;
    }

    @Column(name = "tel_cel_usuario", length = 20)
    public String getTelCelUsuario() {
        return this.telCelUsuario;
    }

    public void setTelCelUsuario(String telCelUsuario) {
        this.telCelUsuario = telCelUsuario;
    }

    @Column(name = "tel_res_usuario", length = 20)
    public String getTelResUsuario() {
        return this.telResUsuario;
    }

    public void setTelResUsuario(String telResUsuario) {
        this.telResUsuario = telResUsuario;
    }

    @Column(name = "url_imagem_usuario", length = 100)
    public String getUrlImagemUsuario() {
        return this.urlImagemUsuario;
    }

    public void setUrlImagemUsuario(String urlImagemUsuario) {
        this.urlImagemUsuario = urlImagemUsuario;
    }

    @Column(name = "cod_cpf_usuario", length = 20)
    public String getCodCpfUsuario() {
        return this.codCpfUsuario;
    }

    public void setCodCpfUsuario(String codCpfUsuario) {
        this.codCpfUsuario = codCpfUsuario;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbUsuario")
    public Set<TaAlocacaoServico> getTaAlocacaoServicos() {
        return this.taAlocacaoServicos;
    }

    public void setTaAlocacaoServicos(Set<TaAlocacaoServico> taAlocacaoServicos) {
        this.taAlocacaoServicos = taAlocacaoServicos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbUsuario")
    public Set<TaAlocacaoLocal> getTaAlocacaoLocals() {
        return this.taAlocacaoLocals;
    }

    public void setTaAlocacaoLocals(Set<TaAlocacaoLocal> taAlocacaoLocals) {
        this.taAlocacaoLocals = taAlocacaoLocals;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbUsuario")
    public Set<TbInscricao> getTbInscricaos() {
        return this.tbInscricaos;
    }

    public void setTbInscricaos(Set<TbInscricao> tbInscricaos) {
        this.tbInscricaos = tbInscricaos;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tbUsuario")
    public Set<TaAlocacaoRecurso> getTaAlocacaoRecursos() {
        return this.taAlocacaoRecursos;
    }

    public void setTaAlocacaoRecursos(Set<TaAlocacaoRecurso> taAlocacaoRecursos) {
        this.taAlocacaoRecursos = taAlocacaoRecursos;
    }
    // Sobrescrevendo metodos utilitarios importantes   
    @Override
    public String toString() {
        return this.nmeUsuario;
    }

    @Override
    public boolean equals(Object outro) {
        return (outro instanceof TbUsuario) && (this.idtUsuario != null)
                ? idtUsuario.equals(((TbUsuario) outro).getIdtUsuario())
                : (outro == this);
    }

    @Override
    public int hashCode() {
        return (idtUsuario != null)
                ? (this.getClass().hashCode() + idtUsuario.hashCode())
                : super.hashCode();
    }
}
